package droidhouseclone;

import java.awt.*;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JPanel;
import javax.swing.JLabel;

/**
 *
 * @author Lorenzo Ferri
 */
public class InfoView extends JPanel implements Observer {

    private JLabel brano;
    private JLabel stato;
    private JLabel listenPort;

    public InfoView(StateObservable model) {

        //Imposto la grandezza del pannello e il Layout Manager
        setSize(200, 50);
        setLayout(new FlowLayout(FlowLayout.LEFT));

        //Inizializzazione degli attributi
        brano = new JLabel("Brano: Sconosciuto");
        stato = new JLabel("Stato: STOP");
        listenPort = new JLabel("Player in Ascolto sulla Porta: ????");

        //aggiungo gli attributi al pannello
        add(brano);
        add(stato);
        add(listenPort);

        //Aggiungo la classe agli observer
        model.addObserver(this);

    }

    public void update(Observable o, Object arg) {

        StateObservable model = (StateObservable) o;
        //Controllo lo stato attuale del subject
        switch (model.getState()) {

            case StateObservable.START:
                //aggiornamento stato e porta di ascolto
                this.stato.setText("Stato: Start");
                listenPort.setText("Player in Ascolto sulla Porta: " + model.getPort());
                break;
            case StateObservable.STOP:
                //resetto le informazioni del pannello
                brano.setText("Brano: Sconosciuto");
                stato.setText("Stato: Stop");
                listenPort.setText("Player in Ascolto sulla Porta: ????");
                break;

            case StateObservable.CHANGEPORT:
                //Setto le informazioni sulla nuova porta di ascolto
                this.listenPort.setText("Player in Ascolto sulla Porta:" + model.getPort());
                break;

            case StateObservable.CHANGESONGNAME:
                //Imposto il nome del brano in riproduzione
                brano.setText("Brano: " + model.getName());
                break;

            default:
                break;

        }
    }
}
